/***********************************************************************************
@file   main.c
@author MCU Application 
@brief  
core/ARM:                 启动：       中断,入口文件
APPlication/logic:        应用层:      业务逻辑文件
APPlication/driver:       应用层:      LED,LCD,红外键盘外设驱动         
BSP/Middleware ：         中间件:      板级驱动,库函数二次封装
BSP/HAL_driver ：         硬件抽象层:  板级驱动,库函数文件

程序下载时需一直摁住电源按键 EX_BUTTON
***********************************************************************************/
#include "main.h"
/***********************************************************************************
* @brief:   低速时钟初始化
            程序主频为4M
            内部低速时钟38400 :   lpuart
            外部低速时钟32768 :   lcd lptimer rtc
***********************************************************************************/
void system_internal_clock(void)
{
    Sysctrl_ClkSourceEnable(SysctrlClkRCL,TRUE);            //使能内部低速时钟
    Sysctrl_SetRCLTrim(SysctrlRclFreq38400);                //配置内部低速时钟       
    Sysctrl_ClkSourceEnable(SysctrlClkXTL,TRUE);            //使能外部低速时钟
    wdt_config_init();    
}
/***********************************************************************************
* @brief:   开机反馈
***********************************************************************************/
void system_startup_feedback(void)
{
    Lcd_FullDisp();//测试显示全屏
 	led_ctrl_all(1);
    delay1ms(1000);//防止swd失效
    led_ctrl_all(0);
    Lcd_ClearDisp();//清屏
}
/***********************************************************************************
 * @brief   主函数
***********************************************************************************/
int32_t main(void)
{
    //-------------------------------
    gpio_out_init();
    system_internal_clock();    
    lcd_init(PW33);//PW33  PW50
    system_startup_feedback();
    //-------------------------------普通定时器init
//    #if(defined(HARD_WARE)&&(HARD_WARE==HARD_WARE_FIRST))
    timer3_init(2500);  
//    #else
//    timer3_init(14999);  
//    #endif 
    
    infared_init();
    //-------------------------------其他外设
    uart_debug_init(); //baud:56000
    lpuart_lora_init();//baud:9600  
    adc_init();
    flash_init();
    //-------------------------------系统数据初始化
    system_start(); 
    lcd_dis_ver((sysVER_MONTH*100+sysVER_DAY),7);
    rtc_config_init(30);//15sec-30   3sec-5 RTC定时器
    lora_init(); 
    #if(defined(HARD_WARE)&&(HARD_WARE==HARD_WARE_CHARGING_VOICE_VERSION))
    adxl345_init();
    #endif 
    gpio_in_init();     //按键及其他未定义
    swd_deinit();       //swd配置输入下拉
    system_power_on();  //预热
    printf("//---------------------------device start---------------------------//\r\n");
    sleep_device_operation_time(POWER_WAKEUP_TIME);//开机运行 POWER_WAKEUP_TIME
    sleep_sensor_operation_time(POWER_WAKEUP_TIME);
    sleep_update_state(1);
    while(1)
    {   
        sleep_exe_fsm(sleep_obj.now_fsm_state);          
    }   
    return 0;
}  
/***********************************************************************************
 * @EOF 
***********************************************************************************/
